package com.blen.videolib;

//import com.mabeijianxi.smallvideorecord2.FocusSurfaceView;
//import com.mabeijianxi.smallvideorecord2.JianXiCamera;
//import com.mabeijianxi.smallvideorecord2.MediaRecorderBase;
//import com.mabeijianxi.smallvideorecord2.MediaRecorderNative;
//import com.mabeijianxi.smallvideorecord2.model.MediaObject;
//import com.mabeijianxi.smallvideorecord2.util.FileUtils;
//import com.mabeijianxi.smallvideorecord2.util.Log;


/**
 * 视频录制
 */
public class MediaRecorderActivity extends BaseActivity
//        implements
//        MediaRecorderBase.OnErrorListener,
//        MediaRecorderBase.OnPreparedListener,
//        MediaRecorderBase.OnEncodeListener
{

//
//    private static final boolean isSlotable = false;//是否分段
//    private static final boolean isTakingPhoto = false;//是否可以拍照
//    private static final int CHOOSE_VIDEO = 10003;
//    private static final int REQUEST_KEY = 100;
//
//    //最大录制时间
//    private int maxDuration = VideoSDK.VIDEO_MAX_LENGTH;
//    private int minDuration = VideoSDK.VIDEO_MIN_LENGTH;
//
//    //录制视频
//    private static final int HANDLER_RECORD = 200;
//    //编辑视频
//    private static final int HANDLER_EDIT_VIDEO = 201;
//    //拍摄照片
//    private static final int HANDLER_CAMERA_PHOTO = 202;
//
//
//
//    /**
//     * 拍摄按钮
//     */
//    private FocusSurfaceView mSurfaceView;
//
//    /**
//     * SDK视频录制对象
//     */
//    private MediaRecorderBase mMediaRecorder;
//    /**
//     * 视频信息
//     */
//    private MediaObject mMediaObject;
//
//    /**
//     * 是否是点击状态
//     */
//    private volatile boolean mPressedStatus;
//    /**
//     * 是否已经释放
//     */
//    private volatile boolean mReleased;
//
//
//    private boolean startState;
//    private boolean NEED_FULL_SCREEN = true;
//
//    private ImageView imgBack,imgAlbum;
//    private TextView tvHint;
//    private RecordedButton rbStart;
//    private View rlBottom;
//    private TextView dialogTextView;
//
//    private boolean isVideoData;
//
//   //本次段落是否录制完成
//    private boolean isRecordedOver;
//
//    @SuppressLint("HandlerLeak")
//    private Handler myHandler = new Handler(){
//        @Override
//        public void handleMessage(Message msg) {
//            switch (msg.what){
//                case HANDLER_RECORD: {
//                    //拍摄视频的handler
//                    if (!isRecordedOver) {
//                        rbStart.setProgress(mMediaObject.getDuration());
//                        myHandler.sendEmptyMessageDelayed(HANDLER_RECORD, 30);
//                    }
//                }
//                break;
////                case HANDLER_EDIT_VIDEO: {
////                    //合成视频的handler
////                    int progress = UtilityAdapter.FilterParserAction("", UtilityAdapter.PARSERACTION_PROGRESS);
////                    if (dialogTextView != null) dialogTextView.setText("视频处理中 " + progress + "%");
////                    if (progress == 100) {
////                        syntVideo();
////                    } else if (progress == -1) {
////                        closeProgressDialog();
////                        Toast.makeText(getApplicationContext(), "视频处理失败", Toast.LENGTH_SHORT).show();
////                    } else {
////                        sendEmptyMessageDelayed(HANDLER_EDIT_VIDEO, 20);
////                    }
////                }
////                break;
//            }
//        }
//    };
//
//
//    @Override
//    protected void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // 防止锁屏
//        setContentView(R.layout.activity_media_recorder);
//        initViews();
//        initViewAction();
//        initMediaRecorder();
//    }
//
//
//    private void changeButton(boolean flag){
//        if(flag){
//            tvHint.setVisibility(View.VISIBLE);
//        }else{
//            tvHint.setVisibility(View.GONE);
//        }
//    }
//
//    /**
//     * 加载视图
//     */
//    private void initViews() {
//        // ~~~ 绑定控件
//        mSurfaceView = findViewById(R.id.fsSurface);
//        imgBack = findViewById(R.id.imgBack);
//        imgAlbum = findViewById(R.id.imgAlbum);
//        tvHint = findViewById(R.id.tvHint);
//        rbStart = findViewById(R.id.rbStart);
//        rlBottom = findViewById(R.id.rlBottom);
//        tvHint.setText(isTakingPhoto?"点击拍照, 长按录制":"长按录制");
//    }
//
//
//    private void initViewAction(){
//
//        mSurfaceView.setTouchFocus(mMediaRecorder);
//
//        rbStart.setMax(maxDuration);
//
//        rbStart.setOnGestureListener(new RecordedButton.OnGestureListener() {
//            @Override
//            public void onLongClick() {
//                //长按录像
//                isRecordedOver = false;
//                mMediaRecorder.startRecord();
//                rbStart.setSplit();
//                myHandler.sendEmptyMessageDelayed(HANDLER_RECORD, 50);
//                isVideoData = true;
//            }
//            @Override
//            public void onClick() {
//                if(!isVideoData && isTakingPhoto) {
//                    //点击拍照
//                    showProgress("正在抓取屏幕, 请保持静止");
//                    mMediaRecorder.startRecord();
//                    myHandler.sendEmptyMessageDelayed(HANDLER_CAMERA_PHOTO, 30);
//                }
//            }
//            @Override
//            public void onLift() {
//                if(isSlotable) {
//                    isRecordedOver = true;
//                    mMediaRecorder.stopRecord();
//                    changeButton(mMediaObject.getMediaParts().size() > 0);
//                }else {
//                    onOver();
//                }
//            }
//
//            @Override
//            public void onOver() {
//                //判断时长
//                if(mMediaObject.getDuration() < minDuration){
//                    initMediaRecorderState();
//                    Toast.makeText(MediaRecorderActivity.this,"录屏时间太短",Toast.LENGTH_SHORT).show();
//                }else {
//                    isRecordedOver = true;
//                    rbStart.closeButton();
//                    mMediaRecorder.stopRecord();
//                    videoFinish();
//                }
//                mMediaRecorder.setRecordState(false);
//            }
//
//            @Override
//            public void onMove() {
//
//            }
//        });
//
//
//        imgBack.setOnClickListener(v -> onBackPressed());
//
//        imgAlbum.setOnClickListener(v -> {
//            if(isVideoData) {
//                initMediaRecorderState();
//            }else {
//                selectVideo();
//            }
//        });
//
//    }
//
//
//    private void videoFinish() {
//        changeButton(false);
//        rbStart.setVisibility(View.INVISIBLE);
//        showProgress();
////        myHandler.sendEmptyMessage(HANDLER_EDIT_VIDEO);
//    }
//
//    private void selectVideo(){
//        Intent intent = new Intent();
//        intent.setType("video/*"); //选择视频 （mp4 3gp 是android支持的视频格式）
//        intent.setAction(Intent.ACTION_GET_CONTENT);
//        startActivityForResult(intent, CHOOSE_VIDEO);
//    }
//
//    private void initMediaRecorderState(){
//        if(mMediaObject==null){
//            initMediaRecorder();
//        }
//        isVideoData = false;
//        rbStart.setVisibility(View.VISIBLE);
//        //album可见, 确认不可见
//        rlBottom.setVisibility(View.VISIBLE);
//        changeButton(false);
//        //TODO 已经录制过的文案是否需要修改
//        tvHint.setVisibility(View.VISIBLE);
//
//        LinkedList<MediaObject.MediaPart> list = new LinkedList<>();
//        if(mMediaObject.getMediaParts()!=null)
//            list.addAll(mMediaObject.getMediaParts());
//
//        for (MediaObject.MediaPart part : list){
//            mMediaObject.removePart(part, true);
//        }
//
//        rbStart.setProgress(mMediaObject.getDuration());
//        rbStart.cleanSplit();
//    }
//
//
//    /**
//     * 初始化拍摄SDK
//     */
//    private void initMediaRecorder() {
//        mMediaRecorder = new MediaRecorderNative();
//
//        mMediaRecorder.setOnErrorListener(this);
//        mMediaRecorder.setOnEncodeListener(this);
//        mMediaRecorder.setOnPreparedListener(this);
//
//        String key = String.valueOf(System.currentTimeMillis());
//        mMediaObject = mMediaRecorder.setOutputDirectory(key,
//                JianXiCamera.getVideoCachePath() + key);
//        mMediaRecorder.setSurfaceHolder(mSurfaceView.getHolder());
//        mMediaRecorder.prepare();
//    }
//
//    @Override
//    protected void onRestart() {
//        super.onRestart();
//        initMediaRecorder();
//    }
//
//    @Override
//    public void onResume() {
//        super.onResume();
//        if (mMediaRecorder == null) {
//            initMediaRecorder();
//        } else {
//            mMediaRecorder.prepare();
//        }
//    }
//
//    @Override
//    public void onPause() {
//        super.onPause();
//        mMediaRecorder.stopPreview();
//    }
//
//    @Override
//    public void onBackPressed() {
//        if (mMediaObject != null)
//            mMediaObject.delete();
//        finish();
//    }
//
//    @Override
//    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        if(resultCode == RESULT_OK && requestCode == REQUEST_KEY && data != null){
//            Intent intent = new Intent();
//            intent.putExtra("video", data.getStringExtra("videoPath"));
//            intent.putExtra("cover",data.getStringExtra("cover"));
//            setResult(RESULT_OK, intent);
//            finish();
//        }else if(resultCode == RESULT_OK && requestCode == CHOOSE_VIDEO && data!=null){
//            //去编辑
//            Log.d("blen",data.toString());
//            //data is like this: dat=content://com.android.providers.media.documents/document/video:76893 flg=0x1
//            // 判断有效性
//                Uri uri = data.getData();
//                String mVideoPath = uri.toString();
//                if (mVideoPath.startsWith("content://")) {
//                    mVideoPath = FileUtils.getPathByUri4kitkat(this, uri);
//                }else if(mVideoPath.startsWith("file://")){
//                    mVideoPath = mVideoPath.substring(7);
//                }
//                goEdit(mVideoPath);
//        }else {
//            initMediaRecorderState();
//        }
//    }
//
//    private void goEdit(String path){
//        rbStart.setDeleteMode(false);
//        Intent intent = new Intent(this, VideoEditActivity.class);
//        intent.putExtra("path", path);
//        startActivityForResult(intent, REQUEST_KEY);
//    }
//
//    @Override
//    public void onEncodeStart() {
//
//    }
//
//    @Override
//    public void onEncodeProgress(int progress) {
//
//    }
//
//    /**
//     * 转码完成
//     */
//    @Override
//    public void onEncodeComplete() {
//        hideProgress();
//        Intent intent = new Intent(this, VideoEditActivity.class);
//        intent.putExtra("path", mMediaObject.getOutputTempTranscodingVideoPath());
//        startActivityForResult(intent, REQUEST_KEY);
//    }
//
//    /**
//     * 转码失败 检查sdcard是否可用，检查分块是否存在
//     */
//    @Override
//    public void onEncodeError() {
//        Toast.makeText(this, R.string.record_video_transcoding_faild,
//                Toast.LENGTH_SHORT).show();
//        finish();
//    }
//
//    @Override
//    public void onVideoError(int what, int extra) {
//        hideProgress();
//        Toast.makeText(this, R.string.record_video_transcoding_faild,
//                Toast.LENGTH_SHORT).show();
//    }
//
//    @Override
//    public void onAudioError(int what, String message) {
//        hideProgress();
//        Toast.makeText(this, R.string.record_video_transcoding_faild,
//                Toast.LENGTH_SHORT).show();
//    }
//
//    @Override
//    public void onPrepared() {
////        initSurfaceView();
//    }
//
//    @Override
//    protected void onDestroy() {
//        super.onDestroy();
//        mMediaRecorder.release();
//    }
//
//    @Override
//    protected void onStop() {
//        super.onStop();
//        if (mMediaRecorder instanceof MediaRecorderNative) {
//            ((MediaRecorderNative) mMediaRecorder).activityStop();
//        }
//    }

}
